ScalaMatsuri 2016 二日目 最速レポート【パートB】
ScalaMatsuri 2016 二日目最速レポート パートB
こんにちは!おおはしりきたけです。今日は ScalaMatsuri 2016の二日目に参加してきました! 一日目はカンファレンス方式でしたが、二日目はアンカンファレンス形式で開催されました。
アンカンファレンスは「参加者が創っていく」スタイルのカンファレンスです。 当日に話したいアイデアを募集し、その場でテーマを決めます。 その後、興味のあるテーマごとに自由に分かれて、少人数のグループでセッションを進めていきます。 積極的に参加することで本当に興味のあるテーマに巡り会えるのがアンカンファレンスの魅力です。
目次
- 朝会
- Domain-Specific Languages with Scala (Cyrille Arthoさん)
- コミュニティLT
- リアクティブシステム入門
- Typesafeの人にリアクティブについて聞こう
- Scalaで機械学習
- Scalaてんしょく
朝会
朝会は、昨日参加者の方からネタを募り投票形式で決まっていきました。投票で決まったタイムテーブルが以下になります
写真
Domain-Specific Languages with Scala
発表者: Cyrille Arthoさん
レポート
- AISTは、つくばに本部を構えている
- CyrilleさんはAIST関西出身
-
DSLとは?
- プログラマじゃない人にドメイン特化の言語
- HTMLやXML
- OCL:デザインの特定分野
- SQL:データベース
- External DSL
- よりユーザーフレンドリなアプローチ
- 自分たちのパーサー、言語を決めていく
- 意味のあるメッセージのあるパーサーを書く
- Internal DSL
- 既存のプログラム言語に組み込まれる
- より簡単に定義ができる
- 拡張もしやすい
- parserを書く必要が無いので、作業量は1/10になる
-
Externalは全てコントロールできるが、Internalは言語仕様によって制約がある
-
Why Scala for DSLs
- InternalScalaの上に構築する
- Implicit conversion function
- Dots and parentheses often optional
- Operetor overloading
- External DSL:Workflow
- parser + toolが1つのボックスに収まっている
- Developerは2つ作る
- External DSL parse approaches
- Parser library
- 文法もコードとしてインプリされている
- Toolも書かなけてばならない
- 再クリック依存
- GrammarはScala
- Parser tool
- Parserを書く必要はない
- Parsergenerator
- ModelはK言語
- GrammarはANTLR
- ANTLARは間違ったインプットを拾える
- Internal DSL
- Scalaに構築
- ユーザーが入力モデルをコンパイルする
- 通常のプログラムとして実行可能コードとなる
- ユーザーとしては、必要なScalaコードにアクセスすることができる
- Internal DSL vs deep embedding
- Shallow embedding
- 基本的にライブラリを書く
- Deep embedding
- ASTを使わなければならない
- プロトタイプを書くのは利点
- 内部的なデータ構造を見て、最終的に実行する
- コードが少し短くなるという特徴がある
- 明確に区別ができないので、2つを組み合わせる
- Trade-offs
- Paeser generation
- AST generation
- Transformation,analysis
- Directly excecutable
- Turing complete
- Personal
- External DS(C言語)
- シンプルなシンタックスでも作業が必要
- 拡張が難しい
- Internal DSL
- メモリ管理を意識する必要が無い
- Extendも簡単
- Scalaは学ぶ価値がある
-
DSLを開発するという意味ではScalaは非常にメリットが有る
-
デモ(Model-based testing)
- Testケースを一つづつ書かない
- ケースを一つづつ書く必要はないがModelに対するI/Oを定義していく必要がある
質疑応答
- ライブラリをInternal DSLで各場合はユーザーガイドが必要
- Model-baced testerをModbadからDLできる
コミュニティLTセッション
Scala bythebay
- 発表者: アレクシーさん
- bythebay
- bythebayは2013年に開始した
- 「BIG DTA SCALA」も昨年から始めた
- Scalaのポジションは非常にユーニーク
- Scalaはプログラミング言語だけではなく、Datapipelineでも使われている
- 2015年5月に開催されるカンファレンスでは以下のような種類の内容を行う
- TEXT:テキストマイニング
- DEMOCRACY
- LAW:法律
- AI:機械学習
- LIFE sience
- UX
###質疑応答 - まだ参加できるか? - サイトをオープンしたばかりなので、これからプログラムを作るので大丈夫
関西のScalaコミュニティ
- 発表者: きの子さん
- 関西で日頃開催されている勉強会
- Scala関西勉強会
- 2012年から大阪で不定期開催。
- 前半はセッション形式、後半はグループ分けして座談会とかワークショップを開催している
- 大阪Scalaもくもく会
- 大阪で月1回平日開催している
- 次回は新大阪で2/24
- Functional Programming in Scala読書会
- 月1ぐらいで大阪で開催
- 事前に目標の章を呼んで当番の人がまとめ資料を発表
- 関西発の大規模Scalaカンファレンス
- 参加者163名
- 2015/8/1に大阪市中央公会堂で開催
- ハンズオンも開催
- 発表動画を公開してます
- Scala関西Summit今年もやります!!
- 2016年9月〜10月開催予定
- 2月キックオフMTG開催!!
- Scala関西盛り上がっています!
The Israeli Scala User Group
- 発表者: トーマさん
- UnderscoreはイスラエルのScalaコミュニティ
- 元々はなんとなく集まっていた
- 2013年当時は5名程度
- メンバーは1000人を超えた
- meetupは大体70人位参加している
- Scalapenoというカンファレンスを開催している
- 2013年は250名程度の参加
- 2014年は300名程度の参加
- 海外の方もたくさん来ていただき、講演してもらった
- 2015年は色々あり、カンファレンスが開催できなかった
- 2016年は開催予定
福岡のScala事情
- 発表者: 縣さん
- 縣さんは、ヌーラボでBacklogやCacooを作っている
- サルでも分かるScalaという勉強会を開催している
- 初心者向けのScala勉強会
- 2015年3月から隔週月曜開催(19回)
- Scala関数型デザイン&プログラミング
- 福岡のScala事情
- 現在Scalaを使っている会社はヌーラボさんのみ?
- JavaやRuby、PHPを採用している会社が多い
- 興味がある人はたくさんいる!
- Scala福岡
- 5/28日(土)
- Scalaに興味ある初心者向けScalaイベント
- Scala関西Summit2015に影響を受け開催することを決意
- 福岡だと受託開発でScalaの事例が無いとうことで却下されることもある
RPScalaの続く理由
- 発表者: 竹下さん
- RPScalaについて
- 隔週水曜日に開催
- 芸者東京エンターテイメント株式会社で開催
- 165回開催しており、6年以上続いている
- 歴史
- 会場は渋谷⇒秋葉原⇒本郷三丁目
- 元々はRead Programing Scalaで、Programing Scalaを読む会
- 長く続けるコツ
- スピーカーを事前に決めない
- グダっても挫けない
- 最近はじめたチャレンジ
- ゆるくサブテーマを決める!
- 何をやっている勉強会かわからない
- 怖い
- これを解決することでサブテーマを決めた
- 開始を30分早く!
- 懇親会がゆっくりできる
- 懇親会の出席率が100%超えたことも!
広島
- 発表者:ひむらさん
- 広島にScalaのコミュニティがない
- 岡山には天領倉敷Scalaというコミュニティはある
- すごい広島では
- 基本的にもくもく
- 毎週水曜に140回ぐらい
- Scala関連もやっている
- LT駆動開発
- Hrosima Java User Group
- Scalaをやりたい人がチラホラ
- コミュニティはやりたいという人がいて立ち上がる
- 広島でScalaコミュニティをやりたい人募集中!
あ、社内コミュニティ
- 発表者:Nosatoさん
- Scala DDDをはじめて7ヶ月
- 芽生えた社内コミュニティ
- Part1:朝練
- 朝勉強会
- 集2回朝7時から
- 火曜:Scala
- 金曜:DDD
- Part2:昼練
- 朝これない人たちに向けて昼勉強会
- 水曜:オムニバス
- 木曜:コップ本
- 効果
- 開発を進めていくうちに勉強会で学んだ内容の議論ができる
- 楽しい!
- 今後
- 社内だけではなくコミュニティの輪を広げたい
- MOTEXさんの会場を積極的に利用してもらいたい
リアクティブシステム入門
発表者: 前出さん
スライド
レポート
- アジェンダ
- リアクティブシステムとは
- リアクティブシステムのための技術
- リアクティブ体験
- リアクティブシステムの実績
- リアクティブシステムとは
- リアクティブ宣言
- アプリケーションへの高まる欲求
- 50台のサーバーで動かしてたけどクラウド上で1000コア環境の環境を作りたい
- 最初は100ギガくらいだったけど、そろそろペタバイト行きそう
- レスポンス3秒じゃなく、500ミリ秒にしたい
- 年1回の2時間のメンテナンスを24/365にしたい
- 即応性、耐障害性、弾力性、メッセージ駆動を備えたシステム
- 届けたい価値として高レスポンス
- 支える原理として伸縮性、耐障害性
- 手段としてメッセージ駆動
- メッセージパッシングによって、コンポーネント間を疎結合にする
-
リアクティブシステムのための技術
- Typesave Reactive Platform
- JavaVM上でリアクティブシステムを実現するためのFWやツールキット
- FW:Play、Akka,Slick
- 言語:Scala、Java
- Play Framework
- Blocking
- リクエストを処理している間にスレッドをブロックする
- Non Blocking
- I/Oの間に別のリクエストを受け付ける
- PlayでNon Blockingが可能で、WebSocketも利用できる
- Akka
- 並行処理と分散処理をサポートするActor System
- Actor System
- メッセージのやり取りが疎結合
- Senderはリクエスト送ったら別の作業ができる
- SenderとActorが、それぞれスレッドを持っている
- Reactive:Actor Model
- Supervision Modelで障害に強いシステムに
- スーパーバイザーのヒエラルキーを作る
- 親のActorが子供のActorを監視する
- サブスーパーバイザーを作って、障害を外へ波及させない
- 障害が起こっても大丈夫な状態に持っていく(let it crash)
- Dispersion
- Actor Modelで簡単にスケールすることができる
- location transparently
- 分散することでコアの分だけ処理ができる
- Slick
- FRMライブラリ
- Scalaのコレクションを扱うかのようにDBアクセスできる
- DB処理は非同期に実行される
- 基本的なDBはサポートしている
- Play、Akka、Slickを使うことでReactiveが実現できる
- なぜ並列化が重要か?
- 並列可能な処理を増やすことで、コアを増やせば処理が早くなる
- リアクティブ体験(デモ)
- ソーラファームを運営しているお客さんから相談という例
- お客さんからの相談
- 発電効率を高めたい
- ソーラパネルの故障検知をリアルタイムに検知
- 全パネルの平均電力を求める
- 平均値からしきい値を決める
- 全パネルの電力のしきい値が低いものが故障とみなす
- AkkaとPlayを使って分散のデモ
- Workerを起動してスケールさせるデモ
- Workerがもう一つ起動して並列で処理が行われる
- Workerを止めても計算処理のワーカーが止まらないデモ
- Workerが1つ止まっても計算処理は止まらない
- しきい値を算出する部分は一瞬とまる
- Masterを止めるデモ
- Masterが止まってもWorkerがMasterとして起動する
- 落ちたMasterを起動するデモ
- MasterがWorkerとして起動した
Typesafeの人にリアクティブについて聞こう
発表者: Typesafe社の皆様
レポート
- 岡本さんから以下の内容について色々聞きたい
- リアクティブマニフェストは抽象度が高い
- 実際の現実とそこら辺どうなってるか?
- 分散システムを組み上げるのが難しい、そういった部分の乖離を議論したい
-
TIS前出さんSIにもリアクティブというのは使えるのではないかということで検証している
- 日本ではサービスで使われている事が多い。金融など固い所で使われていかなどをお聞きしたい(前出さん)
- リアクティブマニフェストでは、概念の話をしている
- 実際の適用とのギャップは確かにある
- どんなアプリケーションでも全ての原則を適用しなければならないわけではない
- 金融システムなどは、リアクティブが必要
- 既存のハードウェアを効率的に有効活用していく
- コスト効率が良いというのは、スケールのアップとダウンをリアクティブにやる
- 金融業界はメッセージパッシングなので、リアクティブを既に実践している
- 金融ならではの具体例などをお聞きしたい(前出さん)
- 金融業界での具体的な問題として分散されたトランザクションをしたい
- それはつまりプロセスのトランザクション
- Akkaというのはツールのボックスで魔法ではない
- 正しい形でどう事業をやっていくかが重要
- 最終的にリアクティブになるのが目標ではなく、ニーズに応えるためのリアクティブ
- Akka Streamsについて
- Streamingは何なのか?
- GoogleDataFlowといったソリューションと競争しているわけではない
- Akka Streamの一番の特徴はBack-Pressure
- Sparkのチームとも協力している
- Akka Streamは色々なツールの間をとりもつことができる。エコシステムができている
- Intelと協力してgearpumpというプロジェクトをやっている
-
Elasticsearchにログを入れるためにAkka Streamを使っている
-
Reactive Streamsの分散化
- 設計、デザインは拡張できる
- 分散化されたAkka Streamが本当に必要なのかを考えたほうが良い
- P2Pなので分散化されたAkka Streamは必要ない
- gearpumpを見て欲しい
- 色々なツールがあるが、全てStreamプロセスのパイプライン
- 実際見てみると全くちがうことをやっている、デリバリー、フェイルオーバーなど全然ちがう
-
gearpumpやStorm
- Akka Streamの特徴はBack-Pressure
- 信頼出来ない構成要素があれば、構成要素の見直しをす
- gearpumpはDynamicに変更できる
-
gearpumpは既に実装されている
-
Back-Pressure
- まずHTTPは、常にTCPの上で動く
- TCPはBack-Pressureのメカニズムが組み込まれている
- 但しサーバーはできるだけ早く消費してしまう
- ※ここでセッション終了
Scalaで機械学習
レポート
- Spark以外にも色々機械学習のツールはある
- ScalaNLP
- Breeze
- 数学ができるものになっている
- リニア回帰とか自分でアルゴリズムを作れる
- Matlabと比較できるドキュメントがある
- 1行とか1列とかの指定もできる
- ベイジアンモデル
- Scalaではベイジアンモデルのグラフモデルのライブラリがある
- Factorie
- ベイジアンのモデルは比較的軽いので最近人気がある
-
Factorieは中身を知らないと使い方が難しいかもしれないが、特別なアルゴリズムで使える
-
Deeplearning for Java(DL4J)
- ND4Jの上にDL4Jが実装されている
- Scala版もある
-
将来的にはGPUで動くようになるので、あとで早くなる期待がある
- 配列ベースで作っているマニアックな本
-
少し数学がわかると便利な本である
-
機械学習を行う上で全てのInputを数字化する必要がある。
- 行列を作ってModelを作る
- Deeplearningで大変なのはneural networkがすぐギブアップしてしまう
- 細かい調整を繰り返すことで、やっとトレーニングが開始される
- Deeplearningは力作業
Scalaてんしょく
給与とやっている言語を書いて無記名投票した結果を公開するセッションでした。内容が内容なので、公開できる内容のみで書かせてもらいました。
- 投票結果
- 利用言語で一番多いのはやっぱりScala
- その他Java、C#、PHPあたりが多かったが多くRuby、Pythonは少なめ
- 給与のレンジは400万〜600万程度が一番多い
- Scalaで1000万以上という方も数名
- 転職するキッカケ
- 企業のHPとかの採用サイトを読み込んで決める
- OSS公開してる企業はそれを見たりする
- 年収ももちろん見るけど、一緒に働く人
- エンジニアとして働きやすい環境か
- 選びやすい会社
- 働いている状況がわかりやすい
- ギャップがないか
- どんなとき辞めるか
- 切磋琢磨できるメンバーがいなくなる
- 人事部とか施策で合わなくなる
- 任意参加の朝会
- 転職する上で自由な働き方は決めてになるか?
- 喜ばれる施策ではある
- ベンチャー企業に興味はあるか?興味ある場合の理由
- やるサービスの内容が面白そう
- 負の遺産が無い
- 少人数でやれる範囲がひろい
- スタートアップでは行動した結果によって会社が大きくなる
- 転職するのに会社の立地は気にするか?
- 家庭があると立地は気になる
まとめ
アンカンファレンス形式ということで、どのようなセッションになるのかなと思っていましたが、非常に勉強になるセッションが盛り沢山でした。海外の方もたくさん参加ししていて、Scalaコミュニティの幅の広さが体験できました!